package com.yupi.springbootinit.config;


import org.jetbrains.annotations.NotNull;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

@Configuration
public class ThreadPoolExecutorConfig {

    // thread factory
    ThreadFactory threadFactory = new ThreadFactory(){
        // 初始线程为1
        private int count = 1;
        @Override
        public Thread newThread(@NotNull Runnable r) {
            Thread thread = new Thread(r);
            thread.setName("线程" + count++);
            return thread;
        }
    };



    @Bean
    public ThreadPoolExecutor threadPoolExecutor() {
        // 线程池参数确定
        return new ThreadPoolExecutor(2,
                4,100, TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(4),threadFactory);
    }
}
